package com.sinog.front.feign.biz;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sinog.core.model.NoticeInfo;
import com.sinog.core.model.UploadAppendixFile;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @desc 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - NoticeInfoManageService -feign
 * @author -
 * @date -
 */
@FeignClient("sinog2c-biz")
public interface NoticeInfoManageService {

    /**
     * 获取首页通知公告列表
     * @param departId departId
     * @param account account
     * @param level level
     * @return List<HashMap < String,Object>>
     */
    @GetMapping("basic/sytzgg")
    List<HashMap<String,Object>> getSyTzggList(
            @RequestParam("departId") String departId,
            @RequestParam("account") String account,@RequestParam("level") String level);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - （新增/更新）
     * @param data data
     * @return boolean
     */
    @PostMapping("/azbj/noticeInfoSave")
    boolean save(@RequestBody String data);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 获取有效期需要的下拉框数据
     * @param codeType codeType
     * @return List<Map < String,Object>>
     */
    @RequestMapping("/azbj/getNoticeType")
    List<Map<String,Object>> getNoticeType(@RequestParam("codeType") String codeType);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 列表
     * @param searchKey searchKey
     * @param departId departId
     * @param startDate startDate
     * @param endDate endDate
     * @param effective effective
     * @param account account
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @param level level
     * @return Page<Map < String,String>>
     */
    @GetMapping("/azbj/noticeInfoList")
    Page<Map<String,String>> getNoticeInfoList(
            @RequestParam("searchKey") String searchKey,
            @RequestParam("departId") String departId,
            @RequestParam("startDate") String startDate,
            @RequestParam("endDate") String endDate,
            @RequestParam("effective") String effective,
            @RequestParam("account") String account,
            @RequestParam("pageIndex") Integer pageIndex,
            @RequestParam("pageSize") Integer pageSize,@RequestParam("level") String level);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 存在附件，删除附件文件
     * @param id id
     * @return List<UploadAppendixFile>
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/getFilesListdata/{id}")
    List<UploadAppendixFile> getFilesListdata(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 删除
     * @param id id
     * @return boolean
     */
    @DeleteMapping("/azbj/tzgggl/noticeInfo/delete/{id}")
    boolean deleteNoticeInfo(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 删除附件
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/deleteFJByid")
    int deleteFjByid(@RequestParam("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 发布
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/announce/{id}")
    int announce(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 取消发布
     * @param id id
     * @return int
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/withdraw/{id}")
    int withdraw(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - 获取部级附件信息
     * @param id id
     * @return List<UploadAppendixFile>
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/getBJFilesListdata/{id}")
    List<UploadAppendixFile> ifBujiFileExist(@PathVariable("id") String id);

    /**
     * 安帮工作资源管理 - 通知公告信息管理 - 通知公告信息管理 - mongo 获取通知公告信息
     * @param id id
     * @return NoticeInfo
     */
    @RequestMapping("/azbj/tzgggl/noticeInfo/findTzggById")
    NoticeInfo findTzggById(@RequestParam("id") String id);
}